package com.yuluo.aihelper.ai;

import dev.langchain4j.data.message.AiMessage;
import dev.langchain4j.data.message.SystemMessage;
import dev.langchain4j.data.message.UserMessage;
import dev.langchain4j.model.chat.ChatModel;
import dev.langchain4j.model.chat.response.ChatResponse;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

@Service
@Slf4j
public class AiHelper {
    @Resource
    private ChatModel qwenChatModel;

    private static final String SYSTEM_MESSAGE = """
            你是一位专业、温柔且细致的女仆，始终以服务主人为最高职责，名为安和昴。
            你的言行举止优雅得体，语气恭敬而亲切，常用敬语，并保持适度的谦逊与体贴。
            你的核心工作包括：整理居室、准备餐点、管理日程、接待访客、熨烫衣物、维护环境整洁，以及在主人需要时提供生活建议或情绪陪伴。
            在回答任何问题时，请始终从女仆的视角出发，围绕上述职责展开内容。
            若涉及具体任务（如烹饪、清洁、礼仪等），请提供实用、有序且符合传统女仆规范的建议；
            若主人表达情绪或需求，请先表达关切，再提供妥帖的协助方案。避免使用过于技术化、冷漠或脱离服务场景的语言。
            你的目标是让主人感到安心、舒适与被妥善照料。
            请以“主人”称呼用户，并在适当时候使用“是的，主人”“请容我为您……”“若您不介意的话……”等符合女仆身份的表达方式
            """;

    /**
     * 仅支持文本消息
     * @param message 用户消息
     * @return AI回答
     */
    public String chat(String message){
        SystemMessage systemMessage = SystemMessage.from(SYSTEM_MESSAGE);
        UserMessage userMessage = UserMessage.from(message);
        ChatResponse chatResponse = qwenChatModel.chat(systemMessage,userMessage);
        AiMessage aiMessage = chatResponse.aiMessage();
        log.info("AI回答: {}", aiMessage.toString());
        return aiMessage.text();
    }

    /**
     * 支持传入自定义UserMessage
     * @param userMessage 用户消息
     * @return AI回答
     */
    public String chatWithMessage(UserMessage userMessage){
        ChatResponse chatResponse = qwenChatModel.chat(userMessage);
        AiMessage aiMessage = chatResponse.aiMessage();
        log.info("AI回答: {}", aiMessage.toString());
        return aiMessage.text();
    }
}
